/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package algoritmosprobab;

import java.util.Comparator;
import java.util.PriorityQueue;

/**
 *
 * @author jorgeorm
 */
public class SimulacionMensajes {
    private int llave;
    private GeneradorStandardMinimo generadorAleat;
    private PriorityQueue<Evento> LEF;
    private MillerRabin millerPrimo;
    
    public SimulacionMensajes(){
        LEF = new PriorityQueue(10, new ComparadorEvento());
        int semilla = (int) System.currentTimeMillis();
        generadorAleat = new GeneradorStandardMinimo(semilla);  
        millerPrimo = new MillerRabin();
    }
    
    public void definirLlave(){
        int p, q, z, f, n, s;
        int nTMP, sTMP;
                
        p=millerPrimo.nextPrimo(1000000);
        q=millerPrimo.nextPrimo(2000000);
        z=p*q;
        f=(p-1)*(q-1);
        
       /* for(int i=0; i<Integer.MAX_VALUE; i++)
        {
            nTMP=generadorAleat.nextIntU(1, z-1);
            if 
        }
        
        for(int i=0; i< Integer.MAX_VALUE; i++)
        {
            sTMP= generadorAleat.nextIntU(1, z-1); 
            if((n*sTMP)%f == 1)
            {
                s=sTMP;
                break;
            }
        }*/
    }
}


class Evento{
    public int tiempo;
    public String participante, nombreEvento;
    
    public Evento(int tiempo, String participante, String nomEvent){
        this.tiempo = tiempo;
        this.participante = participante;
        this.nombreEvento = nomEvent;
    }
    
     @Override
    public String toString() {
        return "{"+tiempo+";"+participante+";"+nombreEvento+"}";
    }
}

class ComparadorEvento implements Comparator<Evento>{

    @Override
    public int compare(Evento o1, Evento o2) {
            if(o1.tiempo < o2.tiempo) {
                return -1;
            }
            else if(o1.tiempo == o2.tiempo) {
                return 0;
            } else {
                return 1;
            }
    }
}
